package com.kuyun.base.service;

import java.util.List;
import java.util.Set;

import org.apache.ibatis.annotations.Param;

import com.kuyun.base.base.Page;
import com.kuyun.base.model.BaseUser;
import com.kuyun.base.model.HttpResult;

public interface BaseUserService {
	/**
	 * 新增或修改用户 （根据id是否为空判断）
	 * 
	 * @author 史梁辰
	 *
	 * @date 2016-6-19下午9:43:43
	 *
	 * @param User
	 * @return
	 */
	public boolean addOrUpdate(BaseUser user) throws Exception;

	/**
	 * 删除用户
	 * 
	 * @author 史梁辰
	 * 
	 * @date 2016-6-19下午9:34:18
	 * 
	 * @param User
	 * @return
	 */
	public HttpResult deleteUser(String id) throws Exception;

	/**
	 * 获取用户数据列表
	 * 
	 * @author 史梁辰
	 * 
	 * @date 2016-6-19下午9:35:39
	 * 
	 * @param User
	 * @return
	 */
	public List<BaseUser> findUser(Page<BaseUser> page, BaseUser user) throws Exception;

	/**
	 * 根据id获取用户信息
	 * 
	 * @author 史梁辰
	 * 
	 * @date 2016-6-19下午9:36:37
	 * 
	 * @param id
	 * @return
	 */
	public BaseUser getUserById(String id) throws Exception;

	/**
	 * 获取用户总数
	 * 
	 * @author 史梁辰
	 *
	 * @date 2016-7-8下午5:27:34
	 *
	 * @param user
	 * @param page
	 * @return
	 * @throws Exception
	 */
	public int getUserConunt(BaseUser user) throws Exception;

	/**
	 * 用户名重复检查
	 * 
	 * @author 史梁辰
	 * 
	 * @date 2016-7-10下午7:58:43
	 * 
	 * @param userName
	 * @param id
	 * @return
	 */
	public int checkUserName(String userName, String id);

	/**
	 * 根据登录名查询用户信息
	 * 
	 * @author 唐靖
	 *
	 * @date 2016年7月14日下午6:23:51
	 *
	 * @param userName
	 * @return
	 */
	public BaseUser findUserByLogInName(String userName);

	/**
	 * 获取用户的所有权限code
	 * 
	 * @author 唐靖
	 *
	 * @date 2016年7月14日下午6:26:21
	 *
	 * @param userName
	 * @return
	 */
	public Set<String> getAllPerByUserName(BaseUser user);
}
